package com.youlai.boot.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.youlai.boot.core.security.model.UserAuthCredentials;
import com.youlai.boot.system.model.entity.GlobalSysUser;

/**
 * 全局用户Service接口
 *
 * @author youlaitech
 * @since 2025-11-08
 */
public interface GlobalSysUserService extends IService<GlobalSysUser> {

    /**
     * 根据OpenID查询全局用户
     *
     * @param openid 微信OpenID
     * @return 全局用户信息
     */
    GlobalSysUser getByOpenId(String openid);

    /**
     * 根据UnionID查询全局用户
     *
     * @param unionid 微信UnionID
     * @return 全局用户信息
     */
    GlobalSysUser getByUnionId(String unionid);

    /**
     * 注册新的全局用户（微信小程序首次登录）
     *
     * @param openid  微信OpenID
     * @param unionid 微信UnionID
     * @return 新注册的用户
     */
    GlobalSysUser registerWechatUser(String openid, String unionid);


    /**
     * 根据 openid 获取用户认证信息
     * @param openId 用户名
     * @return {@link UserAuthCredentials}
     */

    UserAuthCredentials getAuthCredentialsByOpenId(String openId);

    /**
     * 更新用户的租户信息（用户加入组织时调用）
     *
     * @param userId     用户ID
     * @param tenantId   租户ID
     * @param tenantCode 租户编码
     * @return 是否更新成功
     */
    boolean updateTenantInfo(Long userId, Long tenantId, String tenantCode);

    /**
     * 更新用户的UnionID
     *
     * @param userId  用户ID
     * @param unionid UnionID
     * @return 是否更新成功
     */
    boolean updateUnionId(Long userId, String unionid);
}

